package ikelib;



import java.text.*;

public class FFT_test {

	// Sample Data
	public static void main(String[] args) {
		int N = 64;
		Field[] z1 = new Field[N];
		Field[] z2 = new Field[N];
		Field[] z3 = new Field[N];

		for(int i=0; i<N; i++) {
			double re = 6 * Math.cos( 6 * Math.PI * i / N) + 4 * Math.sin(18 * Math.PI * i / N);
			z1[i] = new Complex(re, 0.0);
		}

		for(int i=0; i<N; i++) {
			z2[i] = z1[i].copy();
		}

		FFT.execute(false, z2); // Fourier

		for(int i=0; i<N; i++) {
			z3[i] = z2[i].copy();
		}

		FFT.execute(true, z3); // InverseFourier

		DecimalFormat df = new DecimalFormat();
		df.setMinimumIntegerDigits(2);

		System.out.println("     |  Sample Data  |  Fourier      |  InverseFourier");
		for(int i=0; i<N; i++) {
			StringBuffer sb = new StringBuffer();
			sb.append("  ");
			sb.append(df.format(i));
			sb.append(" | ");
			sb.append(z1[i]);
			sb.append(" | ");
			sb.append(z2[i]);
			sb.append(" | ");
			sb.append(z3[i]);
			System.out.println(sb.toString());
		}
	}

}
/*
     |  Sample Data  |  Fourier      |  InverseFourier
  00 |  6.000  0.000 |  0.000  0.000 |  6.000  0.000
  01 |  8.834  0.000 |  0.000 -0.000 |  8.834  0.000
  02 |  8.912  0.000 |  0.000  0.000 |  8.912  0.000
  03 |  5.692  0.000 |  3.000 -0.000 |  5.692 -0.000
  04 |  0.765  0.000 |  0.000  0.000 |  0.765 -0.000
  05 | -3.240  0.000 |  0.000  0.000 | -3.240  0.000
  06 | -4.496  0.000 |  0.000  0.000 | -4.496  0.000
  07 | -3.220  0.000 |  0.000  0.000 | -3.220 -0.000
  08 | -1.414  0.000 |  0.000  0.000 | -1.414  0.000
  09 | -1.311  0.000 |  0.000 -2.000 | -1.311  0.000
  10 | -3.662  0.000 |  0.000  0.000 | -3.662  0.000
  11 | -7.132  0.000 |  0.000  0.000 | -7.132  0.000
  12 | -9.239  0.000 |  0.000  0.000 | -9.239  0.000
  13 | -8.166  0.000 | -0.000 -0.000 | -8.166 -0.000
  14 | -4.114  0.000 |  0.000  0.000 | -4.114  0.000
  15 |  0.796  0.000 |  0.000 -0.000 |  0.796 -0.000
  16 |  4.000  0.000 |  0.000  0.000 |  4.000 -0.000
  17 |  4.279  0.000 |  0.000 -0.000 |  4.279 -0.000
  18 |  2.553  0.000 |  0.000  0.000 |  2.553 -0.000
  19 |  1.110  0.000 |  0.000  0.000 |  1.110 -0.000
  20 |  1.848  0.000 |  0.000  0.000 |  1.848  0.000
  21 |  4.810  0.000 |  0.000  0.000 |  4.810 -0.000
  22 |  8.107  0.000 |  0.000  0.000 |  8.107 -0.000
  23 |  9.272  0.000 | -0.000  0.000 |  9.272  0.000
  24 |  7.071  0.000 |  0.000  0.000 |  7.071  0.000
  25 |  2.436  0.000 | -0.000 -0.000 |  2.436  0.000
  26 | -2.155  0.000 |  0.000  0.000 | -2.155  0.000
  27 | -4.416  0.000 | -0.000  0.000 | -4.416  0.000
  28 | -3.827  0.000 |  0.000  0.000 | -3.827  0.000
  29 | -1.921  0.000 |  0.000 -0.000 | -1.921 -0.000
  30 | -1.066  0.000 |  0.000  0.000 | -1.066 -0.000
  31 | -2.650  0.000 | -0.000 -0.000 | -2.650 -0.000
  32 | -6.000  0.000 |  0.000  0.000 | -6.000  0.000
  33 | -8.834  0.000 | -0.000  0.000 | -8.834 -0.000
  34 | -8.912  0.000 |  0.000  0.000 | -8.912 -0.000
  35 | -5.692  0.000 |  0.000  0.000 | -5.692  0.000
  36 | -0.765  0.000 |  0.000  0.000 | -0.765  0.000
  37 |  3.240  0.000 | -0.000 -0.000 |  3.240 -0.000
  38 |  4.496  0.000 |  0.000  0.000 |  4.496 -0.000
  39 |  3.220  0.000 | -0.000  0.000 |  3.220  0.000
  40 |  1.414  0.000 |  0.000  0.000 |  1.414  0.000
  41 |  1.311  0.000 | -0.000 -0.000 |  1.311 -0.000
  42 |  3.662  0.000 |  0.000  0.000 |  3.662 -0.000
  43 |  7.132  0.000 |  0.000 -0.000 |  7.132 -0.000
  44 |  9.239  0.000 |  0.000  0.000 |  9.239 -0.000
  45 |  8.166  0.000 |  0.000 -0.000 |  8.166  0.000
  46 |  4.114  0.000 |  0.000  0.000 |  4.114 -0.000
  47 | -0.796  0.000 |  0.000  0.000 | -0.796  0.000
  48 | -4.000  0.000 |  0.000  0.000 | -4.000  0.000
  49 | -4.279  0.000 |  0.000  0.000 | -4.279  0.000
  50 | -2.553  0.000 |  0.000  0.000 | -2.553  0.000
  51 | -1.110  0.000 | -0.000  0.000 | -1.110  0.000
  52 | -1.848  0.000 |  0.000  0.000 | -1.848 -0.000
  53 | -4.810  0.000 |  0.000 -0.000 | -4.810  0.000
  54 | -8.107  0.000 |  0.000  0.000 | -8.107  0.000
  55 | -9.272  0.000 |  0.000  2.000 | -9.272 -0.000
  56 | -7.071  0.000 |  0.000  0.000 | -7.071  0.000
  57 | -2.436  0.000 |  0.000 -0.000 | -2.436 -0.000
  58 |  2.155  0.000 |  0.000  0.000 |  2.155 -0.000
  59 |  4.416  0.000 |  0.000 -0.000 |  4.416 -0.000
  60 |  3.827  0.000 |  0.000  0.000 |  3.827 -0.000
  61 |  1.921  0.000 |  3.000  0.000 |  1.921  0.000
  62 |  1.066  0.000 |  0.000  0.000 |  1.066  0.000
  63 |  2.650  0.000 |  0.000  0.000 |  2.650  0.000
*/
